With the advent of computers and computer software, a number of advancements have been made to help people manage both their working and non-working lives. To help people who are trying to juggle numerous tasks at work, at home, and in between, electronic tasks and calendaring programs have been developed to assist with the often daunting task of maintaining, tracking and remembering all the things that must be accomplished on a daily basis. Unfortunately, most tasks systems are very one-dimensional in that task reminders generated by such systems occur at fixed times as programmed by a user and do not account for the user's operating context at the time of the reminder. For example, a user may have a task reminder in his/her electronic tasks application to pick up flowers at 5:30 p.m. because the user knows he/she is typically on the way home at that time. If the user has been delayed at work, he/she may receive the reminder during an extended meeting, and then when the user actually goes home, he/she may forget to pick up the flowers. In such cases, the user is often required to use some type of “snooze” feature to put the task reminder off to a later time, manually update the reminder timing, or jot down a hand-written reminder on a scrap of paper or other medium. For another example, a user may wish to be reminded to contact a colleague to discuss a certain work document the next time she opens the document, but the user is not sure exactly when she will get to the document next. Thus, she does not know when to enter a reminder into her tasks application. For yet another example, a first have a task to speak with a second person about a particular project, and the first person may wish to have a reminder of the task when he/she comes into proximity or communication with the second person.
It is with respect to these and other considerations that the present invention has been made.